#ifndef _MESH_CONTAINER_H_
#define _MESH_CONTAINER_H_

#ifdef _WIN32
#pragma once
#endif

/**
 * A container to hold and interact with all Meshes.  
 *
 * 02/03/2012 - Stephen Gore - Created the class structure, implemented from 
 *                             UML
 *                           - Created the header file. 
 *                           - Defined all functions. 
 *                           - Made sure all functions and parameters that need 
 *                             to be are const. 
 */

#include <map>
#include <string>
#include "mesh.h"

using std::map;
using std::string;
using std::pair;

class CMeshContainer{
public :
    // Get the instance of the container.
    static CMeshContainer* getInstance();

    // Container controls
    CMesh* addMesh(string key);
    bool removeMesh(string key);
    CMesh* getMesh(string key);

    void clearMeshes();

private:
    // Constructors.
    CMeshContainer(){}
    CMeshContainer(const CMeshContainer &rhs) {}

    // Destructor.
    ~CMeshContainer();

    // Assignment operator.
    CMeshContainer &operator=(const CMeshContainer&) {}

    // Array of meshes.
    map<string,CMesh*> m_Container;
};
#endif